Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BP DMRG - Alpha Version #191

Closed
wants to merge 30 commits into from
Closed

Conversation

JoeyT1994
Copy link
Contributor

This PR adds some files for doing one-site DMRG with belief propagation.

First, support is added in src/beliefpropagationdmrg/tensornetworkoperators.jl for converting an OpSum to a vector of ITensorNetworks which are each trees and span the same set of vertices but have different edges. The sum of those ITensorNetworks is equal to the Hamiltonian represented by OpSum.

Then code is added for doing bp style dmg on those ITensorNetworks in the same vein as alternating update (in the style of using an inserter, extracter and updater)

@mtfishman This is very much a draft for you to look at - it isn't put into the alternating update framework yet because the
algorithm is too unstable so I think we still need to figure out some details. In the case the graph g is a tree the code works fine. When it isn't then the code descends in energy well but then tends to "oscillate" near the true ground state energy but is not able to converge to a solution. Moreover, increasing the bond dimension above chi = 2 tends to make things worse.

The BP error on the solution in the example main.jl (periodic ring of 24 sites) is incredibly small (the exact energy from contracting the result vs BP calculated energy agree to ~ 5 d.p.) but the energy oscillations are often on the order of, say, 3 d.p.

@emstoudenmire
Copy link
Contributor

A key question about the stability is does the core eigensolver solve a regular or generalized eigenvalue problem?

@JoeyT1994
Copy link
Contributor Author

The core eigensolver solves a regular eigenvalue problem here by switching to the BP gauge and inserting inverse square roots of the message tensors. This essentially sets the environment for the local state to the identity matrix within the BP approximation.

@emstoudenmire
Copy link
Contributor

Thanks. So then the eigensolver part sounds fine. I wonder then if it's the gauging procedure. While mathematically correct, the inverse square roots may cause precision issues. I ran into this in the past when implementing MPS in the "Vidal gauge" for parallel DMRG and it was quite difficult to deal with. I wonder if it's possible to work in a different gauge that avoids any inverses, or else implements the inverses by doing linear solves.

@JoeyT1994 JoeyT1994 closed this Jun 14, 2024
@JoeyT1994 JoeyT1994 deleted the bp_dmrg_alt_method branch June 14, 2024 15:45
@JoeyT1994 JoeyT1994 restored the bp_dmrg_alt_method branch June 14, 2024 15:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants